內部系統要開始上線使用了,需要有測試機與正式機。
因此,我開始設計一套穩定的 Git 分支管理策略。
分支名稱 | 角色 | 功能說明 |
---|---|---|
feature/* |
開發者個人功能分支 | 每個功能或 issue 對應一個分支 |
develop |
測試機分支 | 整合所有功能,作為測試環境的部署來源 |
release |
上線緩衝區 | 測試通過後,進行最終 code review 與測試 |
main |
正式機分支 | 僅接收來自 release 的穩定版本,打 tag 後部署 |
sequenceDiagram
participant Dev as 開發者
participant Git as Git Repo
participant Test as 測試機(develop)
participant Prod as 正式機(main)
Dev->>Git: 建立 feature/功能分支
Dev->>Git: 提交 Pull Request
Git-->>Git: 合併到 develop 分支
loop 測試 develop 分支
Git->>Test: 部署 develop 分支到測試機
Test->>Dev: 測試回報 Bug(若有)
Dev->>Git: 修復並更新 feature 分支
Git-->>Git: develop 分支更新
end
Note over Git,Test: 測試通過後
Git->>Git: 建立 release 分支
Dev->>Git: ( Code review & 最終測試 )
Git-->>Git: 合併 release 分支到 main
Git->>Prod: 部署 main 分支到正式機
Note over Dev,Prod: 用 CI/CD 工具監控分支:GitLab CI
🏷️打 Tag 的方式與操作備忘
ChatGPT 提供了詳細說明,我這裡記下重點:
指令 | 功能 |
---|---|
git tag -a v1.0.0 -m "說明" | 建立有說明的版本 tag |
git push origin v1.0.0 | 推送特定 tag |
git push origin --tags | 推送所有 tag |
git tag | 查看所有 tag |
git show v1.0.0 | 查看 tag 對應 commit |
引入初期我打算先省略打tag的部分。
問題 | 說明 |
---|---|
安全性 | 測試機需有 git 權限,易被濫用 |
穩定性 | pull 並不代表 build 或環境完整 |
混亂風險 | 每個 commit 都部署,可能破壞測試穩定性 |
我最後改用 CI/CD 工具(如 GitLab CI)來自動監控 develop
分支,有更新就進行 Build + 測試 + 部署,流程更乾淨也更透明。
項目 | 使用策略 |
---|---|
測試環境部署來源 | develop 分支,自動部署 |
正式環境部署來源 | main 分支,只從 release 合併來的版本 |
CI/CD 工具 | GitLab CI,未來考慮 GitHub Actions |
請用 Mermaid 畫出一套 Git 分支流程圖,包含 develop、release、main 三個分支與測試、部署流程,適用於 .NET 舊專案部署到 IIS。